{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1><center> Barbell Graph </center> </h1>\n",
    "\n",
    "\n",
    "This is the code for the Barbell Graph experiment described in figure 3 of the paper.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## I. Create the graph and visualize\n",
    "\n",
    "(Unfortunately, the nx.draw(G) does not yield a very clean picture, but we basically have two cliques of densely connected nodes, linked by a chain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAFVCAYAAAApGgzgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VGXexvHvzKQTSGihg5QFBREIXVqkI72EHiIIlhXL\n4lpAFN1dXxAVEQVFaVIEBESKiCBNEER6LwoCJiAdQnoyM+8fk0kHEpLJMMn9ua65mDnnmclvdjE3\nTznPMVitVisiIiLiEozOLkBERESyTsEtIiLiQhTcIiIiLkTBLSIi4kIU3CIiIi5EwS0iIuJCchTc\nBw4cICQkJMPxOXPm0KVLF4YMGcKQIUM4c+ZMTn6MiIiIJHG71zfOmDGDFStWUKhQoQznjhw5wsSJ\nE6lZs2aOihMREZG07rnHXalSJaZOnZrpuSNHjjB9+nQGDhzIF198cc/FiYiISFr33ONu164d4eHh\nmZ7r3LkzgwYNwtfXl+eee44tW7bQqlWr235WbGwshw8fpmTJkphMpnstSURExCWYzWYuX77Mww8/\njJeXV7bee8/BfSehoaH4+voC0KpVK44ePXrH4D58+DCDBg1yRCkiIiL3rQULFtCgQYNsvSfHwZ1+\nq/PIyEi6dOnCDz/8gJeXF7/++it9+vS542eULFkSsH2B0qVL57QkERGR+9rff//NoEGDkvMvO3Ic\n3AaDAYDVq1cTExNDcHAwo0aNIiQkBE9PT5o2bUrLli3v+Bn24fHSpUtTvnz5nJYkIiLiEu5lejhH\nwV2uXDkWLVoEQJcuXZKPd+vWjW7duuXko0VERCQT2oBFRETEhSi4RUREXIiCW0RExIUouEVERFyI\ngltERMSFKLhFRERciIJbRETEhSi4RUREXIiCW0RExIUouEVERFyIgltERMSFKLhFRERciIJbRETE\nhSi4RUREXIiCW0RExIUouEVERFyIgltERMSFKLhFRERciIJbRETEhSi4RUREXIiCW0RExIUouEVE\nRFyIgltERMSFKLhFRERciIJbRETEhSi4RUREXIiCW0RExIUouEVERFyIgltERMSFKLhFRERciIJb\nRETEhSi4RUREXIiCW0RExIUouEVERFyIgltERMSFKLhFRERciIJbRETEhSi4RUREXIiCW0RExIUo\nuEVERFyIgltERMSFKLhFRERciIJbRETEhSi4RUREXIiCW0RExIUouEVERFyIgltERMSFKLhFRERc\n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\nCIObiIhIRf4PmCIzw16udcAAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11b1d0810>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x11d666350>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x117603c10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "#### Tests like paper\n",
    "import matplotlib.pyplot as plt\n",
    "import networkx as nx \n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import pickle\n",
    "import seaborn as sb\n",
    "import sklearn as sk\n",
    "from sklearn.cluster import KMeans\n",
    "from sklearn.manifold import TSNE\n",
    "import sys\n",
    "\n",
    "sys.path.append('../')\n",
    "import graphwave as gw\n",
    "from shapes.shapes import *\n",
    "from distances.distances_signature import *\n",
    "from characteristic_functions import *\n",
    "\n",
    "\n",
    "\n",
    "name_graph='barbell'\n",
    "sb.set_style('white')\n",
    "G , colors = barbel_graph(0, 8, 5,plot=True)\n",
    "N=nx.number_of_nodes(G)\n",
    "Gg = pygsp.graphs.Graph(nx.adjacency_matrix(G))\n",
    "Gg.create_laplacian(\"normalized\")\n",
    "Gg.lap_type=\"normalized\"\n",
    "Gg.compute_fourier_basis(force_recompute=True)\n",
    "eigenvec=Gg.e\n",
    "plt.figure()\n",
    "plt.plot(eigenvec)\n",
    "plt.title('Eigenvalues of the Laplacian')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from graphwave import graphwave_alg\n",
    "chi,heat_print, taus = graphwave_alg(G, np.linspace(0,100,25), taus=range(19,21), verbose=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\niy/Us2fPkn4bAACC2sKFC9WkSROv1vXpoK6LLrpIsbGxkqT4+Hjl5OScc/2GDRtq4cKFSkxMVFhY\nmC/fEgCAoFFUVKRDhw6pYcOGXj/Gpwn54MGDGjt2rHJzc1VYWKhBgwbpuuuuK+lmAADAH3wqZAAA\nYC0uDAIAgAEoZAAADEAhAwBgAAoZAAAD+HTaU0m9//77WrFihZ588klJ0qpVqzR16lRddtllkqQH\nH3zQ6/O0gs3pzz0zM1MTJ05UeHi4mjdvroEDB9qcMDBatWql6tWrS5KuvvpqDR482N5AAeDxeDR+\n/Hht375dkZGRmjhxoqpUqWJ3rID5+9//Xnx6ZFJSkiZNmmRzosDIzMzUE088ofnz52vXrl0aOXKk\nnE6nateurfT0dLvj+d3Jz/+bb75Rv379in/277rrLnXs2NHegH5SWFio0aNHa+/evSooKFD//v1V\nq1atEr3+fi/kiRMnat26dapXr17xsqysLA0fPlwpKSn+/va2OtNzT09P13PPPaekpCTdd9992rZt\nm6644gobU/rfrl271KBBAz3//PN2RwmoVatWKT8/X4sXL1ZmZqYmT56sWbNm2R0rIPLz8yVJr7zy\nis1JAmvOnDl68803VbZsWUnS5MmTNWTIEDVp0kTp6elatWqV2rdvb3NK/zn9+WdlZenee+9V3759\n7Q0WAMuXL1eFChU0bdo0ZWdn6/bbb9cVV1xRotff77usr7nmGo0fP/6UZVu3btXSpUvVs2dPTZ06\nVW63298xbHH6c3e5XCooKFBSUpIk6frrr9f69ettShc4WVlZOnDggPr06aN+/fppx44ddkcKiI0b\nN6ply5aSpMaNGysrK8vmRIGzbds25ebmKi0tTX379lVmZqbdkQKiWrVqmjlzZvHtrVu3Fu/9a9Wq\nlTZs2GBXtIA40/P/6KOP1KtXL40ZM0a5ubk2pvOvjh07atCgQZJ+vyhIWFiYvv766xK9/pYV8pIl\nS3Trrbee8icrK+uMuydatGihsWPHauHChcrJydGrr75qVQxbePvcc3JyinfhSVLZsmV1/PjxQMf1\nqzP9XVSsWFH9+vXTK6+8ovvuu0/Dhg2zO2ZAuFwulStXrvh2eHh4qf3H5+mio6OVlpamF198UePH\nj9fQoUND4rmnpKSccjXCky/zUBp/3k93+vNv3Lixhg8frgULFqhKlSp69tlnbUznX2XKlFFMTIxc\nLpcGDRqkwYMHl/j1t2yXdWpqqlJTU71a94477ij+RXXDDTfo/ffftyqGLbx97mXLli3+lCzp94KO\ni4vzZ7QoIb4ZAAAB8klEQVSAO9PfRV5eXvEPaXJysg4dOmRHtICLjY095bKybrdbTmdoHEdZvXp1\nVatWrfjr8uXL69ChQ7rkkktsThZYJ7/epfHn/Xzat29f/Ls+JSVFjz/+uM2J/Gvfvn0aOHCgevXq\npU6dOmn69OnF93nz+tvy2+G2227TgQMHJEmffPKJGjRoYEeMgIuNjVVkZKR2794tj8ejtWvXKjk5\n2e5Yfvfcc88Vf2LYtm3big/mK+2uueYaZWRkSJI2bdqkOnXq2JwocJYuXaopU6ZIkg4cOKCcnBwl\nJibanCrw6tevr88//1yStGbNmpD4eT9ZWlqatmzZIknasGFDqf5df/jwYaWlpWnYsGHq0qWLJKle\nvXolev0DcpT16SZOnKiBAwcqOjpatWrVUrdu3eyIYYsJEyYU775r0aKFrrzySrsj+d2J3dQZGRkK\nDw/X5MmT7Y4UECkpKVq3bp26d+8uSSHzvKXf95SMGjVKPXr0kNPp1KRJk0Jm78DJRowYoUceeUQF\nBQWqWbOmOnToYHekgBo/frwee+wxRUREKDExUY8++qjdkfxm9uzZys7O1qxZszRz5kw5HA6NGTNG\njz/+uNevP9eyBgDAAKH3T1YAAAxEIQMAYAAKGQAAA1DIAAAYgEIGAMAAFDIAAAagkAEAMMD/B7aa\nV6JKVvunAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11d986250>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.decomposition import PCA\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.cluster import KMeans\n",
    "nb_clust=len(np.unique(colors))\n",
    "pca=PCA(n_components=5)\n",
    "trans_data=pca.fit_transform(StandardScaler().fit_transform(chi))\n",
    "km=sk.cluster.KMeans(n_clusters=nb_clust)\n",
    "km.fit(trans_data)\n",
    "labels_pred=km.labels_\n",
    "######## Params for plotting\n",
    "cmapx=plt.get_cmap('rainbow')\n",
    "x=np.linspace(0,1,np.max(labels_pred)+1)\n",
    "col=[cmapx(xx) for xx in x ]\n",
    "markers = {0:'*',1: '.', 2:',',3: 'o',4: 'v',5: '^',6: '<',7: '>',8: 3 ,9:'d',10: '+',11:'x',12:'D',13: '|',14: '_',15:4,16:0,17:1,18:2,19:6,20:7}\n",
    "########\n",
    "\n",
    "for c in np.unique(colors):\n",
    "        indc=[i for i,x in enumerate(colors) if x==c]\n",
    "        #print indc\n",
    "        plt.scatter(trans_data[indc,0], trans_data[indc,1],c=np.array(col)[list(np.array(labels_pred)[indc])] ,marker=markers[c%len(markers)],s=500)\n",
    "labels = colors\n",
    "for label,c, x, y in zip(labels,labels_pred, trans_data[:, 0], trans_data[:, 1]):\n",
    "            plt.annotate(label,xy=(x, y), xytext=(0, 0), textcoords='offset points')\n",
    "  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
